package com.xiaolin.admin.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaolin.admin.valid.GenderValid;
import lombok.Getter;
import lombok.Setter;

import javax.validation.Valid;
import javax.validation.constraints.*;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 用户表
 * </p>
 *
 * @author xiaolin
 * @since 2024-04-27
 */
@Getter
@Setter
@TableName("t_user")
public class User implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 账号
     */
    private String accountNumber;

    /**
     * 密码
     */
    @Size(min = 8, max = 16)
    private String pwd;

    /**
     * 昵称
     */
    @NotBlank(message = "昵称不能为空")  // 非空校验，纯空格字符串不可验证通过
    private String nickname;

    /**
     * 性别：男-male；女-female
     */
    @GenderValid
    private String gender;

    /**
     * 头像
     */
    private String avatar;

    /**
     * 手机号
     */
    @Pattern(regexp = "1([345789])\\d{9}")
    private String phone;

    /**
     * 邮箱
     */
    @NotEmpty  // 非空校验，但纯空格字符串可验证通过
    @Email
    private String email;

    /**
     * 用户状态：0-禁用；1-启用
     */
    private Integer state;

    /**
     * 删除标记：0-删除；1-正常
     */
    private Integer flag;

    /**
     * 创建时间
     */
    private LocalDateTime createTime;

    /**
     * 修改时间
     */
    private LocalDateTime updateTime;

    @Valid
    @NotNull  // 非空校验，但空字符串可验证通过
    private Detail detail;

}
